<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;
class CateController extends Controller
{
    // 将分类关系封装成静态方法
   static public function getCate(){
         // 查询数据
        $data = DB::table('shop_cates') -> select(DB::raw("*,concat(path,',',cid) as paths")) -> orderBy('paths') -> get();
        // dd($data);

        foreach ($data as $k => $v) {
            // 逗号出现的次数
            $l = substr_count($v['path'],',');
            // 拼接路径
            $data[$k]['name'] = str_repeat('|----',$l).$v['name'];
         }

         return $data;
    }

    // 分类添加
   public function getAdd($id = ''){

    // 加载模板 将数据显示在模板中
    return view('admin.cate.add', ['data'=>self::getCate(),'cid'=>$id]);
   }


   // 分类列表
   public function getIndex(){
    
    return view('admin.cate.index',['data'=>self::getCate()]);
   }

   // 插入数据
   public function postInsert(Request $request){
    // 获取所需数据
    $arr = $request -> only(['name','pid']);
    // 获取父级id
    $pid = $request -> input('pid');
    // 判断 拼接路径
    if($pid == 0){
        $arr['path'] = 0;
    }else{
        $res = DB::table('shop_cates')->where('cid',$pid)->first();
        $arr['path'] = $res['path'].','.$res['cid'];
    }

    // 插入数据
    $s = DB::table('shop_cates')->insert($arr);
    // 判断结果
    if($s){
        return redirect('admin/cate/index')->with('success','添加成功');
    }else{
        return back() -> with('error','添加失败');
    }
   }
   // 删除分类
   public function getDelete($id){
    // 查询所属类别
    $data = DB::table('shop_cates') -> where('pid',$id) -> first();
    if($data){
        return back() -> with('error','当前类别有子类，不允许删除');
    }
    // 执行删除
    $res = DB::table('shop_cates') -> where('cid',$id) -> delete();
    // 判断结果
    if($res){
        return redirect('admin/cate/index')->with('success','删除成功');
    }else{
        return back() -> with('error','删除失败');
    }
   }

   public function getEdit($id){
    $res = DB::table('shop_cates') -> where('cid',$id)-> first();
    return view('admin/cate/edit',['data'=>self::getCate(),'res'=>$res]);
   }
   // 修改
   public function postUpdate(Request $request){
        $arr = $request -> only(['name','pid']);
         // 获取父级id
        $pid = $request -> input('pid');
        $id = $request -> input('cid');
        // 判断 拼接路径
        if($pid == 0){
            $arr['path'] = 0;
        }else{
            $res = DB::table('shop_cates')->where('cid',$pid)->first();
            $arr['path'] = $res['path'].','.$res['cid'];
        }
        // 查询所属类别
        $data = DB::table('shop_cates') -> where('pid',$id) -> first();
        if($data){
            return back() -> with('error','当前类别有子类，不允许修改');
        }
        
        // 修改
        $s = DB::table('shop_cates')->where('cid',$id)->update($arr);
        // 判断结果
        if($s){
            return redirect('admin/cate/index')->with('success','修改成功');
        }else{
            return back() -> with('error','修改失败');
        }
   }
}
